// import GraceRequestConfig from '@/custom/graceRequestConfig.js';
//
//
// // 判断socket是否已经连接成功
// var socketOpen = false;
//
// var socketUserClose = false;  //主动调用  关闭后不在启动
// // socket是否已经调用关闭function //自然关闭
// var socketClose = false;
// // socket发送的消息队列
// var socketMsgQueue = [];
// // 判断心跳变量
// var heart = '';
// // 心跳失败次数
// var heartBeatFailCount = 0;
// // 终止心跳
// var heartBeatTimeOut = null;
// // 终止重新连接
// var connectSocketTimeOut = null;
//
// var user = uni.getStorageSync('user')
//
// // 定义WebSocket相关功能的对象
// const webSocket = {
// 	/**
// 	 * 创建一个 WebSocket 连接
// 	 * @param {options}
// 	 *   url      String    是    开发者服务器接口地址，必须是 wss 协议，且域名必须是后台配置的合法域名
// 	 *   header    Object    否    HTTP Header, header 中不能设置 Referer
// 	 *   method    String    否    默认是GET，有效值：OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
// 	 *   protocols  StringArray    否    子协议数组    1.4.0
// 	 *   success    Function    否    接口调用成功的回调函数
// 	 *   fail      Function    否    接口调用失败的回调函数
// 	 *   complete    Function    否    接口调用结束的回调函数（调用成功、失败都会执行）
// 	 */
// 	connectSocket: function (options) {
// 		socketClose = false;
// 		socketUserClose = false;
// 		socketMsgQueue = [];
// 		const wsUrl = GraceRequestConfig.wsUrl + '?authorName=' + user.authorName + "&authorId=" + user.authorId;
// 		console.log('开始连接')
// 		console.log('heartBeatTimeOut')
// 		console.log(heartBeatTimeOut)
// 		console.log('socketUserClose')
// 		console.log(socketUserClose)
// 		if(!socketUserClose){
// 			//重新心跳
// 			webSocket.startHeartBeat();
// 		}
// 		if(socketOpen){
// 			console.log('已连接ws不在重复连接')
// 		}
//
// 		// const wsUrl = 'ws://192.168.10.98:9326?authorName=' + user.authorName + "&authorId=" + user.authorId;
// 		uni.connectSocket({
// 			url: wsUrl,
// 			success: function (res) {
// 				if (options) {
// 					// 成功回调
// 					options.success && options.success(res);
// 				}
// 			},
// 			fail: function (res) {
// 				if (options) {
// 					// 失败回调
// 					options.fail && options.fail(res);
// 				}
// 			}
// 		});
// 	},
//
// 	/**
// 	 * 通过 WebSocket 连接发送数据
// 	 * @param {options}
// 	 *   data    String / ArrayBuffer    是    需要发送的内容
// 	 *   success    Function    否    接口调用成功的回调函数
// 	 *   fail    Function    否    接口调用失败的回调函数
// 	 *   complete    Function    否    接口调用结束的回调函数（调用成功、失败都会执行）
// 	 */
// 	sendSocketMessage: function (options) {
// 		// console.log('发送消息')
// 		if (socketOpen) {
// 			uni.sendSocketMessage({
// 				data: options.msg,
// 				success: function (res) {
// 					if (options) {
// 						options.success && options.success(res);
// 					}
// 				},
// 				fail: function (res) {
// 					if (options) {
// 						options.fail && options.fail(res);
// 					}
// 				}
// 			});
// 		} else {
// 			// app.msg('聊天服务器已断开...')
// 			// socketMsgQueue.push(options.msg);
// 		}
// 	},
//
// 	/**
// 	 * 关闭 WebSocket 连接。
// 	 * @param {options}
// 	 *   code    Number    否    一个数字值表示关闭连接的状态号，表示连接被关闭的原因。如果这个参数没有被指定，默认的取值是1000 （表示正常连接关闭）
// 	 *   reason    String    否    一个可读的字符串，表示连接被关闭的原因。这个字符串必须是不长于123字节的UTF-8 文本（不是字符）
// 	 *   fail    Function    否    接口调用失败的回调函数
// 	 *   complete    Function    否    接口调用结束的回调函数（调用成功、失败都会执行）
// 	 */
// 	closeSocket: function (options) {
// 		//关闭重连定时器
// 		if (connectSocketTimeOut) {
// 			clearTimeout(connectSocketTimeOut);
// 			connectSocketTimeOut = null;
// 		}
// 		socketOpen = false;
// 		//主动调用关闭
// 		socketUserClose = true;
// 		socketClose = true;
// 		const self = this;
// 		//关闭心跳了
// 		self.stopHeartBeat();
// 		uni.closeSocket({
// 			success: function (res) {
// 				console.log('WebSocket 已关闭！');
// 				if (options) {
// 					options.success && options.success(res);
// 				}
// 			},
// 			fail: function (res) {
// 				if (options) {
// 					options.fail && options.fail(res);
// 				}
// 			}
// 		});
// 	},
// 	// 开始心跳
// 	startHeartBeat: function () {
// 		console.log('socket开始心跳');
// 		const self = this;
// 		heart = 'heart';
// 		self.heartBeat();
// 	},
//
// 	// 结束心跳
// 	stopHeartBeat: function () {
// 		console.log('socket结束心跳');
// 		const self = this;
// 		heart = '';
// 		if (heartBeatTimeOut) {
// 			clearTimeout(heartBeatTimeOut);
// 			heartBeatTimeOut = null;
// 		}
// 		if (connectSocketTimeOut) {
// 			clearTimeout(connectSocketTimeOut);
// 			connectSocketTimeOut = null;
// 		}
// 	},
//
// 	// 心跳
// 	heartBeat: function () {
// 		const self = this;
// 		if (!heart) {
// 			return;
// 		}
// 		self.sendSocketMessage({
// 			msg: "心跳内容",
// 			success: function (res) {
// 				// console.log('socket心跳成功');
// 				if (heart) {
// 					heartBeatTimeOut = setTimeout(() => {
// 						self.heartBeat();
// 					}, 5000);
// 				}
// 			},
// 			fail: function (res) {
// 				console.log('socket心跳失败');
// 				console.log(heartBeatFailCount);
// 				// if (heartBeatFailCount > 2) {
// 				// 	// 重连
// 				// 	self.connectSocket();
// 				// }
// 				if (heart) {
// 					heartBeatTimeOut = setTimeout(() => {
// 						self.heartBeat();
// 					}, 5000);
// 				}
// 				heartBeatFailCount++;
//
// 			},
// 		});
// 	},
// 	onSocketMessageCallback(callback) {
// 	},
// };
//
// // 监听WebSocket连接打开事件。callback 回调函数
// uni.onSocketOpen(function (res) {
// 	console.log('WebSocket连接已打开！');
// 	// 如果已经调用过关闭function
// 	// 如果已经调用过关闭function
// 	if (socketClose) {
// 		console.log('不再自行关闭')
// 		// webSocket.closeSocket();
// 	} else {
// 		socketOpen = true;
// 		for (var i = 0; i < socketMsgQueue.length; i++) {
// 			uni.sendSocketMessage(socketMsgQueue[i]);
// 		}
// 		socketMsgQueue = [];
// 		webSocket.startHeartBeat();
// 	}
// 	// 发送请求离线消息状态
//
//
//
// });
//
// // 监听WebSocket错误。
// uni.onSocketError(function (res) {
// 	socketOpen = false
// 	socketClose = true
//
// 	console.log('WebSocket连接打开失败，请检查！', res);
// 	console.log('异常关闭' + socketClose);
// 	console.log('主动关闭' + socketUserClose);
// 	//如果不是主动关闭的 重新链接
// 	if (!socketUserClose) {
// 		clearTimeout(connectSocketTimeOut);
// 		connectSocketTimeOut = setTimeout(() => {
// 			console.log('不是主动关闭所以重连')
// 			webSocket.connectSocket();
// 		}, 3000);
// 	}
// });
//
// // 监听WebSocket接受到服务器的消息事件。
// uni.onSocketMessage(function (res) {
// 	// console.log('收到服务器内容：' + res.data)
// 	webSocket.onSocketMessageCallback(res)}
// );
//
// // 监听WebSocket关闭。
// uni.onSocketClose(function (res) {
// 	console.log('WebSocket 已关闭！===================');
// 	socketOpen = false
// 	socketClose = true
// 	console.log('异常关闭' + socketClose);
// 	console.log('主动关闭' + socketUserClose);
// 	//如果不是主动关闭的 重新链接
// 	// if (!socketUserClose) {
// 	// 	clearTimeout(connectSocketTimeOut);
// 	// 	connectSocketTimeOut = setTimeout(() => {
// 	// 		//
// 	// 		console.log('不是主动关闭所以重连 这里进行重连')
// 	// 		webSocket.connectSocket();
// 	// 	}, 3000);
// 	// }
// });
//
// // 使用export default导出webSocket对象，方便其他模块导入使用
// export default webSocket;
